using System.Collections.Generic;
namespace Battle.TimelineLog {
public interface ISysMainKey { string MainKey { get; } }
/**触发时机类型*/
public enum SeEnumActiveType{
	ShiJian=1,      //时间
	BeiDong=2,      //被动
	ZhanQian=3,      //战前
	KaiZhan=4,      //开战
	GuaZai=5,      //挂载
	XieZai=6,      //卸载
}


/**值类型*/
public enum SeEnumValueType{
	MoRen=0,      //默认
	ZhiJieZhi=1,      //直接值
	BaiFenBi=2,      //百分比
}


/**战斗目标选择类型*/
public enum SeEnumTargetType{
	ZiJi=1,      //自己
	GongJiZhe=2,      //攻击者
	ShouJiZhe=3,      //受击者
	SuiJi=4,      //随机
	DuiYuan=5,      //队员
}


/**阵营类型*/
public enum SeEnumCampType{
	JiFang=1,      //己方
	DiFang=2,      //敌方
}


public class SeReward {
	/***/
	public string 	id;
	/***/
	public int 	num;
	/***/
	public int 	type;
}


public class SeBattleEffect {
	/**效果id*/
	public string 	id;
	/**效果值*/
	public int 	value;
}


public class SeBattleTarget {
	/**阵营[EnumCampType]*/
	public SeEnumCampType 	camp;
	/**目标选择类型[EnumTargetType]*/
	public SeEnumTargetType 	type;
	/**目标人数*/
	public int 	num;
}


public class SeBattleProp {
	/**攻击*/
	public int 	Atk;
	/**防御*/
	public int 	Def;
	/**最大血量*/
	public int 	HpMax;
	/**闪避*/
	public int 	Dodge;
	/**暴击率*/
	public int 	Crit;
	/**暴击伤害*/
	public int 	CritHurt;
	/**连击率*/
	public int 	Combo;
	/**攻击速度*/
	public int 	AtkSpd;
}


public class SysBuff : ISysMainKey {
	/**唯一id*/
	public string 	id;
	/**描述*/
	public string 	desc;
	/**技能触发类型,时间为挂载时不生效*/
	public SeEnumActiveType 	activeType;
	/**触发间隔时间，毫秒*/
	public int 	cd;
	/**持续时间,不填则时间无限,毫秒*/
	public int 	duration;
	/**buff效果
id:效果id,value:值*/
	public SeBattleEffect 	effect;
	/**叠加层数*/
	public int 	stack;
	public string MainKey{get=>id.ToString();}
}


public class SysHero : ISysMainKey {
	/**唯一id*/
	public string 	id;
	/**属性类型*/
	public string 	name;
	/***/
	public string 	desc;
	/**普通攻击效果id*/
	public SeBattleEffect 	attack;
	/**技能目标*/
	public SeBattleTarget 	target;
	/**技能列表*/
	public List<string> 	skills;
	/**属性值列表，没有的默认为0，必须要有血量和攻速*/
	public SeBattleProp 	prop;
	public string MainKey{get=>id.ToString();}
}


public enum SeEnumProptype{
	GongJi=1,      //攻击
	FangYu=2,      //防御
	ShengMingShangXian=3,      //生命上限
	ShanBi=4,      //闪避
	BaoJi=5,      //暴击
	BaoJiShangHai=6,      //暴击伤害
	LianJi=7,      //连击
	GongSu=8,      //攻速
}


public class SeEnumPropID{
	public static string 	Atk = "Atk";      //Atk
	public static string 	Def = "Def";      //Def
	public static string 	HpMax = "HpMax";      //HpMax
	public static string 	Dodge = "Dodge";      //Dodge
	public static string 	Crit = "Crit";      //Crit
	public static string 	CritHurt = "CritHurt";      //CritHurt
	public static string 	Combo = "Combo";      //Combo
	public static string 	AtkSpd = "AtkSpd";      //AtkSpd
}


public class SysProp : ISysMainKey {
	/**唯一id*/
	public string 	id;
	/**属性类型*/
	public SeEnumProptype 	type;
	/**名字*/
	public string 	name;
	/**效果值类型*/
	public SeEnumValueType 	valueType;
	public string MainKey{get=>id.ToString();}
}


public class SysSkill : ISysMainKey {
	/**唯一id*/
	public string 	id;
	/**名字*/
	public string 	name;
	/**描述*/
	public string 	desc;
	/**技能触发类型*/
	public SeEnumActiveType 	activeType;
	/**间隔时间，毫秒*/
	public int 	cd;
	/**消耗魔法值*/
	public int 	cost;
	/**技能生效条件*/
	public string 	conditionId;
	/**技能目标*/
	public SeBattleTarget 	target;
	/**技能效果*/
	public List<SeBattleEffect> 	effects;
	public string MainKey{get=>id.ToString();}
}


public enum SeEnumSkillConditiontype{
	XueLiangShaoYuZuiDaZhi=1,      //血量少于最大值
	XueLiangDaYuZuiDaZhi=2,      //血量大于最大值
	JiBaiDiRen=3,      //击败敌人
	GongJi=4,      //攻击
	BeiGongJi=5,      //被攻击
	ZhanDouKaiShiShi=6,      //战斗开始时
	ShouDaoShangHai=7,      //受到伤害
	ZaoChengShangHai=8,      //造成伤害
}


public class SysSkillCondition : ISysMainKey {
	/**唯一id*/
	public string 	id;
	/**条件类型*/
	public SeEnumSkillConditiontype 	type;
	/**条件值*/
	public int 	value;
	/**值类型*/
	public SeEnumValueType 	valueType;
	/**符合条件后的概率判断,不填为100*/
	public int 	rate;
	/**条件值失效后是否取消效果，不含概率*/
	public int 	valueFailCancelEffect;
	public string MainKey{get=>id.ToString();}
}


public enum SeEnumSkillEffecttype{
	PuShang=1,      //普伤
	buff=2,      //buff
	DuShang=3,      //毒伤
	ZhiLiao=4,      //治疗
	FanJi=5,      //反击
	FanShang=6,      //反伤
	ZhanDouZhuangTai=7,      //战斗状态
	ShuXingGaiBian=8,      //属性改变
}


public enum SeEnumSkillEffectvalueFromType{
	ZuiDaShengMingZhi=1,      //最大生命值
}


public enum SeEnumSkillEffectstatus{
	Wu=0,      //无
	RanShao=1,      //燃烧
	LiuXue=2,      //流血
	ShangHaiJiaShen=3,      //伤害加深
	BingDong=4,      //冰冻
}


public class SysSkillEffect : ISysMainKey {
	/**唯一id*/
	public string 	id;
	/**技能效果描述*/
	public string 	desc;
	/**效果类型*/
	public SeEnumSkillEffecttype 	type;
	/**效果值百分比来源*/
	public SeEnumSkillEffectvalueFromType 	valueFromType;
	/**效果值类型*/
	public SeEnumValueType 	valueType;
	/**如果是buff，填buff的id；如果是属性改变,填属性id*/
	public string 	extend;
	/**效果造成的状态(失效时取消)*/
	public SeEnumSkillEffectstatus 	status;
	public string MainKey{get=>id.ToString();}
}



}